package br.ufpe.cin.wormbox.core;

import java.io.File;
import java.io.Serializable;

public class Arquivo implements Serializable {

	private static final long serialVersionUID = -4855699174977622953L;
	private String caminhoArquivo;
	private String nomeArquivo;
	private boolean ehArquivo;
	private long ultimaModificacao;
	private long tamanho;
	private Arquivo[] subs;
	
	public Arquivo(File arquivo){
		this.caminhoArquivo = arquivo.getPath();
		this.nomeArquivo = arquivo.getName();
		this.ehArquivo = arquivo.isFile();
		this.ultimaModificacao = arquivo.lastModified();
		this.tamanho = arquivo.length();
		if(this.ehArquivo){
			this.subs = new Arquivo[0];
		}else{
			this.subs = this.listaArquivos(arquivo);
		}
	}
	
	public Arquivo[] listaArquivos(File arquivo){
		File[] listaFiles = arquivo.listFiles();
		Arquivo[] retorno = new Arquivo[listaFiles.length];
		for(int i = 0; i < listaFiles.length; i++){
			retorno[i] = new Arquivo(listaFiles[i]);
		}
		return retorno;
	}
	
	public boolean equals(Arquivo arquivo) {
		if(this.ehArquivo == arquivo.isEhArquivo()) {
			return this.nomeArquivo.equalsIgnoreCase(arquivo.getNomeArquivo());
		}
		return false;
	}
	
	public String getCaminhoArquivo() {
		return caminhoArquivo;
	}
	
	public String getNomeArquivo() {
		return this.nomeArquivo;
	}

	public boolean isEhArquivo() {
		return ehArquivo;
	}

	public long getUltimaModificacao() {
		return ultimaModificacao;
	}

	public long getTamanho() {
		return tamanho;
	}

	public Arquivo[] getSubs() {
		return subs;
	}

	public static void main(String[] args) {
	
	}
	
}
